package com.xieyong.leetcode;

public class Leetcode1717 {
    public static void main(String[] args) {
        Leetcode1717 leetcode1717 = new Leetcode1717();
        String s = "cdbcbbaaabab";
        int x = 4, y = 5;
        int i = leetcode1717.maximumGain(s, x, y);
        System.out.println(i);
    }

    public int maximumGain(String s, int x, int y) {
        return x > y ? maximumGain(s,x,y,'a','b') : maximumGain(s,y,x,'b','a');
    }
    public int maximumGain(String s, int x, int y,int a,int b) {
        int res = 0;
        int cnt1 = 0, cnt2 = 0;
        for (char c : s.toCharArray()) {
            if (c == a) {
                cnt1++;
            } else if (c == b) {
                if (cnt1 > 0) {
                    res += x;
                    cnt1--;
                } else {
                    cnt2++;
                }
            } else {
                res += Math.min(cnt1, cnt2) * y;
                cnt1 = 0;
                cnt2 = 0;
            }
        }
        res += Math.min(cnt1, cnt2) * y;
        return res;
    }



//    public int maximumGain(String s, int x, int y) {
//        char firstC = 'a';
//        char secondC = 'b';
//        int max = x;
//        int min = y;
//        if (x < y) {
//            firstC = 'b';
//            secondC = 'a';
//            max = y;
//            min = x;
//        }
//        int res = 0;
//        Stack<Character> stack1 = new Stack<>();
//        Stack<Character> stack2 = new Stack<>();
//        for (Character c : s.toCharArray()) {
//            if (!stack1.isEmpty() && (stack1.peek() == firstC && c == secondC)) {
//                stack1.pop();
//                res += max;
//            } else {
//                stack1.push(c);
//            }
//        }
//        while (!stack1.isEmpty()) {
//            if (!stack2.isEmpty() && stack2.peek() == firstC && stack1.peek() == secondC) {
//                stack1.pop();
//                stack2.pop();
//                res += min;
//            } else {
//                stack2.add(stack1.pop());
//            }
//        }
//        return res;
//    }
}
